package futbol.tacticas.concursantes2007.SeteTeam.jugadores.facklab;

import futbol.tacticas.concursantes2007.SeteTeam.jugadores.AbstractTacticaJugador;

import java.awt.Point;
import java.util.Vector;
//import futbol.tacticas.jugadores.geometria.Punto;

import futbol.tacticas.Comando;


/**
 * El delantero alto es un jugador muy fuerte pero muy lento, su
 * objetivo principal es el de desmarcarse cuando la bola este 
 * arriba y conseguir disparar a puerta lo antes posible.
 * 
 * @author Sete
 *
 */
public class TacticaDelanteroAlto  extends AbstractTacticaJugador{
	
	public TacticaDelanteroAlto(int xInicial, int yInicial, int fuerza, final Entrenador entrenador) {
		super(Entrenador.DEL_ALTO, xInicial, yInicial, fuerza, entrenador);
	}
	

	protected void generarMovimientoOfensivo(final Vector<Comando> comandos){

		final Point bola = getSituacion().getBola();
		final Point A = new Point(100,-80);
		final Point B = new Point(160,0);
		
		if (bola.getX()>A.x && bola.getX()<B.x && bola.getY()>A.y && bola.getY()<B.y ){
			comandos.add(irA(bola.x, bola.y));
		}else{
			Point P = new Point(heuristicaMovimiento(A,B));
			comandos.add(irA((int)P.getX(),(int)P.getY()));
		}		
	}
	
	protected void generarMovimientoDefensivo(final Vector<Comando> comandos){

		final Point bola = getSituacion().getBola();
		final Point A = new Point(100,-80);
		final Point B = new Point(160,0);
		
		if (bola.getX()>A.x && bola.getX()<B.x && bola.getY()>A.y && bola.getY()<B.y ){
			comandos.add(irA(bola.x, bola.y));
		}else{
			Point P = new Point(heuristicaMovimiento(A,B));
			comandos.add(irA((int)P.getX(),(int)P.getY()));
		}		
	}

	protected void generarMovimiento(final Vector<Comando> comandos) {
		if (getPosicion().distance(getSituacion().getBola())<30){
			Point O = new Point(getSituacion().getBola());
			comandos.add(irA(O.x, O.y));
		}else{
			if (getSituacion().getBola().getX()>0){
				generarMovimientoOfensivo(comandos);
			}else{
				generarMovimientoDefensivo(comandos);
			}
		}
	}
	
	protected void generarAccion(final Vector<Comando> comandos) {
		if (getSituacion().getBola().getX()>0){
			comandos.add(this.tiroAPuertaPreciso());
		}else{
			comandos.add(this.tiroAPuertaPreciso());
		}
	}

}
